package cn.edu.ptu.jobfairs.services;

import cn.edu.ptu.jobfairs.basic.bo.Resume;
import cn.edu.ptu.jobfairs.basic.common.Condition;
import cn.edu.ptu.jobfairs.basic.common.Result;
import cn.edu.ptu.jobfairs.basic.dto.request.IdDTO;
import cn.edu.ptu.jobfairs.basic.dto.request.QueryDTO;
import cn.edu.ptu.jobfairs.basic.dto.request.ResumeQueryDTO;
import cn.edu.ptu.jobfairs.basic.dto.request.ResumeStatusDTO;

/**
 * @author wutingting.226@163.com
 * @date 2020/8/26
 */

public interface ResumeService {
    // 教师: 待评价 | 已评价* | 所有*
    // 人事: 待评价 | 已评价 | 所有 | 无效简历 // 检索条件: 状态 岗位 时间 人

    // 人事: 看到该评价的人还没评价: 全体/院负责人/系负责人 (看具体谁还没评价)

    // 面试: 待面试 | 已完成 | 所有  // 增删改查
    // 签约: 待签约 | 已完成 | 所有
    // 已评价: 评价意见

    Result addResume(Resume resume); //hr权限
    Result editResume(Resume resume); //hr权限
    Result changeStatus(ResumeStatusDTO resumeStatusDTO);
    //自动填入对应HandlerId 如果是安排(1)/取消面试(0) 对应要修改InterviewRes表 判断是否已经安排,不能重复添加 用insert ... update when exist
    //isInterview=1 如果是安排面试,根据interviewId查找面试时间, 否则使用 系统当前时间
    //isInterview=0 如果是安排签约,使用signTime, 否则使用 系统当前时间
    //需要做状态能否修改的判断:
    //interviewStatus只能从0 -> 1/-1 ; 1 -> 2/-2/-3 避免resumeDetails找不到面试情况
    //interviewStatus改动后 signStatus变为0
    //interviewStatus不为2不允许修改signStatus
    //不能重复安排面试/签约

    Result delResume(IdDTO idDTO); //hr权限 要求interviewStatus = 0 同时删除相应评价
    Result listResumes(ResumeQueryDTO resumeQueryDTO); //判断user Status选择能看到的简历
    // 返回resume 但仅有字段: positionId name phone 和相应status/time/handlerId 和createTime
    // 用ListResult包装

    Result exportResumes(ResumeQueryDTO resumeQueryDTO);
    Result listNotEvaluatedResumes(ResumeQueryDTO resumeQueryDTO);
    // 返回NotEvaluatedResumeDTO 其中resume仅有字段: positionId name phone 和相应status/time/handlerId 和createTime
    // 用ListResult包装

    Result listByInterviewId(IdDTO idDTO);
    // 返回某次面试中的所有简历 name phone idNumber interviewStatus signStatus
    // 用DataResult包装

    Result resumeContent(IdDTO idDTO); // 返回 Resume
    Result resumeDetails(IdDTO idDTO); // 返回 ResumeDTO

    Result statistics(QueryDTO queryDTO); // 返回 DataResult包装 List<StatisticsDTO> 按时间区间统计
    // 首页: 简历 面试 [签约]
    // 系统管理: 面试安排
    // 个人: 我的评价
}
